DAY34:Product of consecutive Fib numbers


Posted by birdbirdmurmur on 2023-08-15

題目連結

https://www.codewars.com/kata/5541f58a944b85ce6d00006a

解法

第一版

function productFib(prod) {
    let fn = [0, 1]
    for (let i = 0; i < prod; i++) {
        fn.push(fn[i] + fn[i + 1])

        if (fn[i] * fn[i + 1] === prod) {
            return [fn[i], fn[i + 1], true]
        } else {
            if (fn[i] * fn[i + 1] < prod && fn[i + 1] * fn[i + 2] > prod) {
                return [fn[i + 1], fn[i + 2], false]
            }
        }
    }
}

第二版:簡化

function productFib(prod) {
    let [a, b] = [0, 1];
    while (a * b < prod) {
        [a, b] = [b, a + b];
    }
    return [a, b, a * b === prod];
}

筆記

第一版 用for迴圈印出Fib陣列

第二版 做一次簡化
用解構賦值 將[a,b]設為[0,1]
這裡使用while簡化迴圈
並更新[a,b]的值(往後挪一位)
最後回傳a,ba * b === prod的判斷


#javascript #Codewars #while







Related Posts

[ 筆記 ] Express 03 - ORM & Sequelize

[ 筆記 ] Express 03 - ORM & Sequelize

重新回歸學習程式 - part 1  20230308

重新回歸學習程式 - part 1 20230308

側邊選單

側邊選單


Comments